package com.ruoyi.framework.handler;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.ruoyi.common.utils.SecurityUtils;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * @Author 季伟
 * 功能：mybatis自动填充处理
 */
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {

        this.setFieldValByName("createAt",new Date(),metaObject); // 起始版本 3.3.0(推荐使用)
        this.setFieldValByName("updateAt",new Date(),metaObject);// 起始版本 3.3.0(推荐)

        // 自动填充
        try {
            if (this.getFieldValByName("createBy",metaObject)==null){
                this.setFieldValByName("createBy",SecurityUtils.getUserId(),metaObject);
            }
            this.setFieldValByName("updateBy",SecurityUtils.getUserId(),metaObject);
        } catch (Exception e) {
            this.setFieldValByName("createBy",-1,metaObject);
            this.setFieldValByName("updateBy",-1,metaObject);
        }
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateAt",new Date(),metaObject); // 起始版本 3.3.0(推荐)
        try {
            this.setFieldValByName("updateBy",SecurityUtils.getUserId(),metaObject);
        } catch (Exception e) {
            this.setFieldValByName("updateBy",-1L,metaObject);
        }
    }
}
